#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT([Stasis],[0.1],[sears@cs.berkeley.edu])
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADER([config.h])

# Checks for programs.
#AC_PROG_CXX
AC_PROG_CC
AC_PROG_CPP
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_AWK
AC_PROG_RANLIB
AC_PROG_YACC
AC_PROG_LEX
# Checks for libraries.

# For SWIG & Python
# AC_PROG_LIBTOOL
AC_PROG_SWIG(1.3)
SWIG_ENABLE_CXX
SWIG_PYTHON

# Linux has a broken O_DIRECT flag, but we allow people to override it from
# the command line.
test_host_prw=yes
AC_CACHE_CHECK([for open/O_DIRECT], db_cv_open_o_direct, [
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <fcntl.h>]], [[
	open("a", O_RDONLY | O_DIRECT, 0);
]])],[db_cv_open_o_direct=yes; test_host_prw=no],[db_cv_open_o_direct=no])])
if test "$test_host_prw" = "no" -a "$db_cv_open_o_direct" = "yes"; then
	case "$host_os" in
	linux*)
		db_cv_open_o_direct=no;
		AC_MSG_WARN(
		    [O_DIRECT interface ignored on $host_os-$host_vendor.]);;
	esac
fi
if test "$db_cv_open_o_direct" = "yes"; then
	AC_DEFINE(HAVE_O_DIRECT)
	AH_TEMPLATE(HAVE_O_DIRECT, [Define to 1 if you have the O_DIRECT flag.])
fi

AC_CHECK_LIB([m], [sqrt])
AC_CHECK_LIB([pthread], [pthread_create])

AC_CONFIG_DB

if test x$build_benchmarks = xyes ; then 
if test $DB_ENABLED = 0; then 
AC_MSG_WARN([Could not find Berkeley DB; some benchmarks will not be built])
fi
fi

AC_CHECK_LIB([intl], [bindtextdomain])
AC_CHECK_LIB([c], [bindtextdomain])

# Checks for header files.
AC_HEADER_DIRENT
AC_FUNC_ALLOCA
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/socket.h sys/time.h syslog.h unistd.h errno.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
#AC_TYPE_INT64_T
#AC_TYPE_UINT64_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
#AC_TYPE_SSIZE_T
AC_HEADER_TIME
AC_STRUCT_TM

#enable largefile support.
AC_SYS_LARGEFILE

# Checks for library functions.
AC_FUNC_ERROR_AT_LINE
## Assume we have these, and that they work.
## (otherwise, bad stuff happens sometimes)
#AC_FUNC_MALLOC
#AC_FUNC_REALLOC

AC_FUNC_MEMCMP
AC_FUNC_STAT
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([bzero fdatasync floor ftruncate getcwd gettimeofday inet_ntoa localtime_r memmove memset mkdir posix_memalign pow powl socket sqrt strchr strdup strerror strrchr strstr strtol strtoul sync_file_range tcase_set_timeout])

AC_OUTPUT
